package br.com.sixsoftware.helpdesk.persistence;

import java.util.ArrayList;
import java.util.List;

import br.com.sixsoftware.helpdesk.domain.Cliente;
import br.com.sixsoftware.helpdesk.domain.Usuario;
import br.com.sixsoftware.helpdesk.exception.NegocioException;
import br.com.sixsoftware.helpdesk.util.BancoDadosSimulado;
import br.gov.frameworkdemoiselle.stereotype.PersistenceController;
import br.gov.frameworkdemoiselle.template.JPACrud;

@PersistenceController
public class ClienteDAO extends JPACrud<Cliente, Long> {

	private static final long serialVersionUID = 1L;

	public void inserirCliente(Cliente cliente) throws NegocioException {
		for (Usuario usuarioPersistente : BancoDadosSimulado.listaUsuariosCadastrados) {
			if (cliente.getLogin().equals(usuarioPersistente.getLogin())) {
				throw new NegocioException("Já existe um usuário cadastrado com esse login.");
			}
		}
		cliente.setId(BancoDadosSimulado.sequenceIdUsuario);
		BancoDadosSimulado.listaUsuariosCadastrados.add(cliente);
		BancoDadosSimulado.sequenceIdUsuario++;
	}

	public List<Cliente> listarTodosClientes() {
		List<Cliente> listaClientes = new ArrayList<Cliente>();
		for (Usuario usuarioPersistente : BancoDadosSimulado.listaUsuariosCadastrados) {
			if (usuarioPersistente.getTipoUsuario().equals("cliente")) {
				listaClientes.add((Cliente) usuarioPersistente);
			}
		}
		return listaClientes;
	}

	public void alterarCliente(Cliente cliente) {
		for (Usuario usuarioPersistente : BancoDadosSimulado.listaUsuariosCadastrados) {
			if (cliente.getId().equals(usuarioPersistente.getId())) {
				Cliente.clonar(cliente, (Cliente) usuarioPersistente);
			}
		}
	}

}
